% !TEX program = xelatex
% !TEX encoding = utf-8

\subsection{边框回归}

\subsubsection{边框回归算法}

\begin{frame}
\frametitle{为什么要边框回归？}
\begin{columns}
    \column{.7\textwidth}
    \begin{figure}[H]
        \includegraphics[width=1.0\columnwidth]{2018/7-16/images/br-plane}
    \end{figure}
    
    \column{.3\textwidth}
    边框（Bounding Box）：
    
    {\color{green} Ground Truth}
    
    {\color{red} Region Proposal}
    
    \vspace{\baselineskip}
    
    即便 Region Proposal 被识别为飞机，但是 IOU 通常过小，识别结果仍然不好
\end{columns}
\end{frame}

\begin{frame}
\frametitle{边框回归的目的}
\begin{columns}
    \column{.5\textwidth}
    \begin{figure}[H]
        \includegraphics[width=1.0\columnwidth]{2018/7-16/images/br-do}
    \end{figure} \pause
    
    \column{.5\textwidth}
    边框使用四维向量 $(x,y,w,h)$ 来表示， 分别是中心点坐标和宽高
    
    \vspace{\baselineskip}
    
    边框回归做了什么？ \pause
    
    寻找一种映射 $\mathit{f}$, 令：
    \[\mathit{f}{\color{red}(P_x, P_y, P_w, P_h)} = {\color{blue}(\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h})}\] 
    其中：
    \[{\color{blue}(\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h})} \approx {\color{green}(G_x, G_y, G_w, G_h)}\]
\end{columns}
\end{frame}

\subsubsection{边框回归实现}

\begin{frame}
\frametitle{边框变换}
{\Large 那么经过何种变换才能从上图中的窗口 $P$ 变为窗口 $\hat{G}$ 呢？} \pause
\begin{enumerate}
    \item[平移] {变换 $(\Delta x, \Delta y)$，$\Delta x = P_w d_x(P), \Delta y = P_h d_y(P)$：
    \begin{equation}
    \label{平移x}
    \centering
    \hat{G}_x = P_w d_x(P) + P_x
    \end{equation}
    \begin{equation}
    \label{平移y}
    \centering
    \hat{G}_y = P_h d_y(P) + P_y
    \end{equation}} \pause
    \item[缩放] {变换 $(S_w, S_h)$，$S_w = exp(d_w(P)), S_h = exp(d_h(P))$：
    \begin{equation}
    \label{缩放w}
    \centering
    \hat{G}_w= P_w exp(d_w(P))
    \end{equation}
    \begin{equation}
    \label{缩放h}
    \centering
    \hat{G}_h= P_h exp(d_h(P) )
    \end{equation}}
\end{enumerate}
观察公式 \ref{平移x},\ref{平移y},\ref{缩放w},\ref{缩放h}， 需要学习 $d_x(P),d_y(P),d_w(P),d_h(P)$ 四个变换.
\end{frame}

\begin{frame}
\frametitle{输入与输出}
\begin{enumerate}
    \item[输入] $Proposal \to P = (P_x, P_y,  P_w, P_h )$ （对应的 CNN 特征），训练阶段还包括 $Ground\ Truth$ \pause
    \item[输出] {要进行 $d_x(P),d_y(P),d_w(P),d_h(P)$ 四个变换，根据公式 \ref{平移x},\ref{平移y},\ref{缩放w},\ref{缩放h} 知， P 变换得到 $\hat{G}$，不是 $G$。利用 Ground Truth 和 Proposal 计算真实的平移量 $(t_x,t_y)$ 和尺度缩放 $(t_w,t_h)$：
    \begin{equation}
    \label{tx}
    \centering
    t_x = (G_x - P_x) / P_w
    \end{equation}
    \begin{equation}
    \label{ty}
    \centering
    t_y = (G_y - P_y) / P_h
    \end{equation}
    \begin{equation}
    \label{te}
    \centering
    t_w = \log (G_w / P_w)
    \end{equation}
    \begin{equation}
    \label{th}
    \centering
    t_h = \log(G_h / P_h)
    \end{equation}}
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{优化目标}
目标函数可以表示为 $d_*(P)=w^T*\Phi(P)$， $\Phi(P)$ 是输入 Proposal 的特征向量，$w_*$ 是要学习的参数（$*$ 表示 $x,y,w,h$，并且包含偏置量），$d_*(P)$ 是得到的预测值。让预测值跟真实值 $t_*=(t_x,t_y,t_w,t_h)$ 差距最小，得到损失函数为：
\begin{equation}
    \label{loss}
    \centering
    Loss = \sum_i^N (t_*^i - \hat{w}_*^T\Phi(P^i))^2
\end{equation} \pause
函数优化目标为：
\begin{equation}
    \label{aim}
    \centering
    W_* = argmin_{w_*} \sum_i^N(t_*^i - \hat{w}_*^T\phi_5(P^i))^2 + \lambda || \hat{w}_*||^2
\end{equation}
\end{frame}
